home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Technotools
/
Technotools (Chestnut CD-ROM)(1993).ISO
/
database
/
scd210
/
sc_base.h
< prev
next >
Wrap
Text File
|
1991-01-26
|
27KB
|
836 lines
/*************************************************
** **
** sc_base.h **
** **
** SoftC Database Library common header **
** **
** Copyright (C) 1988, 1989, 1990, 1991 by **
** SoftC, Ltd. **
** 16820 3rd St NE **
** Ham Lake, MN 55304 **
** (612) 434-6968 **
** **
** All rights reserved. **
*************************************************/
/**********
*
* Program Control Prototypes
*
**********/
int scdinit( int, int );
void scdterm( void );
/**********
*
* Defines
*
**********/
/* scdikfind, scdnkfind, scdckfind definitions */
#define SC_FIRST 1 /* find first key */
#define SC_EXACT 2 /* find exact key (uses record number) */
/* scdtrget, scdtrput definitions */
#define SC_CRUNCHNG 0 /* leave memo buffer unchanged */
#define SC_CRDELETE 0x100 /* delete soft carriage returns */
/* scdcopen, scddopen, scdiopen, scdnopen, scdtopen */
#define SC_RDWR 0 /* read/write access (default) */
#define SC_RDONLY 0x100 /* read only access */
#define SC_BUFFER 0 /* buffer disk writes in memory (default) */
#define SC_FLUSH 0x200 /* force all writes to disk */
#define SC_EXCLUDE 0 /* open file for exclusive use (default) */
#define SC_SHARED 0x400 /* open file for shared use */
/* scdcbfrsz, scddbfrsz, scdibfrsz, scdnbfrsz */
#define SC_SETSZ 0 /* set buffer size */
#define SC_GETSZ 1 /* get current buffer size */
/* scddrput, scdtrput */
#define SC_UPDATE 0x100 /* update existing record */
#define SC_ADD 0x200 /* append record at end of file */
/* scdccreate, scdicreate, scdncreate, scdmtnew */
#define SC_DESCEND 0x100 /* descending key order */
#define SC_UNIQUE 0x80 /* unique index keys */
#define SC_CKEY 'C' /* character type key */
#define SC_DKEY 'D' /* date type key */
#define SC_LKEY 'L' /* logical key type */
#define SC_NKEY 'N' /* numeric type key */
/* SoftC extended index file key types (scdncreate) */
#define SC_DBLKEY 1 /* double key */
#define SC_FLTKEY 2 /* float key */
#define SC_ULNGKEY 3 /* unsigned long key */
#define SC_LNGKEY 4 /* long key */
#define SC_USHTKEY 5 /* unsigned short key */
#define SC_SHTKEY 6 /* short key */
/* scdinit */
#define SC_USEXHNDL 1 /* allow more than 20 open files */
/**********
*
* Type Definitions
*
**********/
typedef struct { /* database field description */
char name[11]; /* field name */
char type; /* field type
* 'c' or 'C' - character
* 'd' or 'D' - date
* 'f' or 'F' - floating point (binary)
* 'l' or 'L' - logical
* 't' or 'T' - true
* 'f' or 'F' - false
* 'y' or 'Y' - yes
* 'n' or 'N' - no
* '?' - uninitialized
* 'n' or 'N' - floating point (bcd) */
int len; /* field width */
int decpl; /* decimal count */
} SC_FIELD;
/* SoftC extended data file field types */
#define SC_SHORT_FLD 1 /* signed short integer (16 bits) */
#define SC_USHORT_FLD 2 /* unsigned short integer */
#define SC_LONG_FLD 3 /* signed long integer (32 bits) */
#define SC_ULONG_FLD 4 /* unsigned long integer */
#define SC_FLOAT_FLD 11 /* IEEE single real (32 bits) */
#define SC_MSFLT_FLD 12 /* Microsoft floating point (old) */
#define SC_DOUBLE_FLD 13 /* IEEE double real (64 bits) */
#define SC_MSDBL_FLD 14 /* Microsoft double (old) */
typedef struct { /* file open bit fields */
unsigned int isreadonly:1; /* read only - or - read/write (default) */
unsigned int isshareable:1; /* shared - or - single (default) */
unsigned int isunbuffered:1; /* no buffering - or - auto buffer (default) */
} SC_FLAGS;
typedef struct { /* dBASE data file information packet */
char fname[80]; /* file name */
char style; /* file type (dBase3 or dBase4) */
char memo; /* memo file required */
char mdx; /* dBase4 .MDX file required (true or false) */
char trans; /* dBase4 transaction in process (true or false) */
char encrypt; /* dBase4 data file encrypted (true or false) */
char lockt; /* record/file/no lock */
unsigned long ladrs; /* beginning address of locked area */
unsigned long lsize; /* length of locked region */
SC_FLAGS flags; /* miscellaneous flags */
} SC_DBFINFO;
/* SC_DBFINFO style flag */
#define SC_DB3 0 /* dBase3 type data file */
#define SC_DB4 1 /* dBase4 type data file */
#define SC_FP1 0x10 /* FoxPro1 type data file */
#define SC_DBL2 0x42 /* SoftC unique data file */
/* SC_DBFINFO memo flag */
#define SC_USEMEMO 1 /* memo file used */
#define SC_NOMEMO 0 /* no memo file required */
/* SC_DBFINFO lockt flag */
#define SC_DRECLCK 0x01 /* record lock active */
#define SC_DFILLCK 0x02 /* file lock active */
typedef struct { /* dBASE data file record information packet */
int reclen; /* record length in bytes */
int numflds; /* number of fields in record */
char *bfr; /* address of the record buffer */
} SC_DBFRINFO;
typedef struct { /* dBASE memo file information packet */
char fname[80]; /* file name */
char style; /* file type (dBase3 or dBase4) */
SC_FLAGS flags; /* miscellaneous flags */
} SC_DBTINFO;
typedef struct { /* FoxPro memo file information packet */
char fname[80]; /* file name */
SC_FLAGS flags; /* miscellaneous flags */
} SC_FPTINFO;
typedef struct { /* dBASE index file information packet */
char fname[80]; /* file name */
char keytype; /* key type ('C' Character, 'N' Date/Numeric) */
char keylen; /* key length */
int exprlen; /* key expression length */
SC_FLAGS flags; /* miscellaneous flags */
} SC_NDXINFO;
typedef struct { /* Clipper index file information packet */
char fname[80]; /* file name */
int keylen; /* key length */
int keydpl; /* number of decimal places in numeric keys */
int exprlen; /* key expression length */
SC_FLAGS flags; /* miscellaneous flags */
} SC_NTXINFO;
typedef struct { /* FoxBASE index file information packet */
char fname[80]; /* file name */
char keytype; /* key type ('C' Character, 'N' Date/Numeric) */
char keylen; /* key length */
int exprlen; /* key expression length */
SC_FLAGS flags; /* miscellaneous flags */
} SC_IDXINFO;
typedef struct { /* dBASE IV index file information packet */
char fname[80]; /* data file name */
int usedtags; /* number of tags in use */
SC_FLAGS flags; /* miscellaneous flags */
} SC_MDXINFO;
typedef struct { /* dBASE IV tag information packet */
char tname[80]; /* tag file name */
char keytype; /* key type ('C' Character, 'D' Date, 'N' Numeric) */
char keylen; /* key length */
int exprlen; /* key expression length */
} SC_MDXTINFO;
/**********
*
* dBASE Database File Manipulator Prototypes
*
**********/
int scddbfrsz( int, /* data file handle */
int *, /* I/O buffer length in records */
int ); /* set or get buffer length */
int scddbof( int ); /* file handle */
int scddclose( int ); /* file handle */
int scddcreate( char *, /* filename */
int, /* number of data fields */
SC_FIELD *, /* field description array */
int ); /* dBase version (3 or 4) */
int scddeof( int ); /* file handle */
int scddflush( int ); /* file handle */
int scddhget( int ); /* file handle */
int scddinfo( int, /* file handle */
SC_DBFINFO * ); /* file information & status */
int scddlock( int ); /* file handle */
int scddlud( int, /* file handle */
char *, /* last update date string */
int ); /* date string format */
int scddopenx( int *, /* file handle */
char *, /* filename */
int ); /* open mode & characteristics */
int scddpack( int *); /* data file handle */
int scddsize( int, /* file handle */
long * ); /* number of data records */
int scddunlock( int ); /* file handle */
/**********
*
* dBASE Database Field Manipulator Prototypes
*
**********/
int scddfgets( int, /* file handle */
int, /* field number */
char * ); /* buffer for field data */
int scddfget( int, /* file handle */
int, /* field number */
void * ); /* buffer for field data */
int scddfinfo( int, /* file handle */
int *, /* length of longest field */
SC_FIELD * ); /* field description array */
int scddfnam2no(int, /* file handle */
int *, /* field number */
char *); /* field name */
int scddfputs( int, /* file handle */
int, /* field number */
char * ); /* buffer for field data */
int scddfput( int, /* file handle */
int, /* field number */
void * ); /* buffer for field data */
/**********
*
* dBASE Database Record Manipulator Prototypes
*
**********/
int scddrclear( int ); /* file handle */
int scddrdel( int, /* file handle */
long ); /* record number to delete */
int scddrget( int, /* file handle */
long ); /* record number to read */
int scddrgetx( int, /* file handle */
char *, /* input buffer address */
long ); /* record number to read */
int scddrinfo( int, /* file handle */
SC_DBFRINFO * ); /* record info structure */
int scddrlock( int, /* file handle */
long ); /* record number to lock */
int scddrnum( int, /* file handle */
long * ); /* current data record number */
int scddrput ( int, /* file handle */
long *, /* record number */
int ); /* append or update record */
int scddrputx( int, /* file handle */
char *, /* output buffer address */
long *, /* record number */
int ); /* append or update record */
int scddrstat( int ); /* file handle */
int scddrundel( int, /* fiel handle */
long ); /* record number */
/**********
*
* dBase Memo File Manipulator Prototypes
*
**********/
int scdtclose( int ); /* file handle */
int scdtcreate( char * ); /* filename */
int scdtcreatex(char *, /* filename */
int, /* block size in 512 byte blocks */
int ); /* file format (dBASE 3/4) */
int scdthget( int ); /* file handle */
int scdtinfo( int, /* file handle */
SC_DBTINFO * ); /* file information and status */
int scdtopenx( int *, /* file handle */
char *, /* filename */
int ); /* open mode & characteristics */
int scdtpack( int, /* data file handle */
int *); /* memo file handle */
int scdtrget( int, /* file handle */
long, /* record number */
char **, /* buffer for record number */
int ); /* remove soft carriage returns? */
int scdtrput( int, /* file handle */
long *, /* record number */
char *, /* buffer for record data */
int ); /* insert soft carriage returns? */
/**********
*
* dBASE Index File Manipulators Prototypes
*
**********/
int scdnbfrsz( int, /* index file handle */
int *, /* buffer length in pages */
int ); /* set or get buffer length */
int scdnclose( int ); /* file handle */
int scdncreate( char *, /* filename */
int, /* index key type */
char *, /* key expression */
int ); /* key length */
int scdnexpr( int, /* file handle */
char * ); /* key expression */
int scdnflush( int ); /* file handle */
int scdnhget( int ); /* file handle */
int scdnindex( int, /* data file handle */
char *, /* new file name */
int, /* index key type */
char *, /* key expression */
int ); /* key length */
int scdninfo( int, /* file handle */
SC_NDXINFO * ); /* file information and status */
int scdnopenx( int *, /* file handle */
char *, /* filename */
int ); /* open mode and characteristics */
/**********
*
* dBASE Index Key Building Prototypes
*
**********/
int scdnkdate( double *, /* numeric date */
char *, /* date string */
int ); /* date string format type */
int scdnkmake( int, /* .DBF file handle */
int, /* .NDX file handle */
void ** ); /* index key */
/**********
*
* dBASE Index Key Manipulator Prototypes
*
**********/
int scdnkadd( int, /* file handle */
void *, /* key string */
long ); /* data record number */
int scdnkbot( int, /* file handle */
void *, /* key string */
long *); /* data record number */
int scdnkcur( int, /* file handle */
void *, /* key string */
long *); /* data record number */
int scdnkdel( int, /* file handle */
void *, /* key string */
long ); /* data record number */
int scdnkfind( int, /* file handle */
void *, /* key string */
long *, /* data record number */
int); /* exact match or first */
int scdnknext( int, /* file handle */
void *, /* key string */
long *); /* data record number */
int scdnkprev( int, /* file handle */
void *, /* key string */
long *); /* data record number */
int scdnktop( int, /* file handle */
void *, /* key string */
long *); /* data record number */
/**********
*
* Clipper Index File Manipulators Prototypes
*
**********/
int scdcbfrsz( int, /* index file handle */
int *, /* buffer length in pages */
int ); /* set or get buffer length */
int scdcclose( int ); /* file handle */
int scdccreate( char *, /* filename */
int, /* index key type */
char *, /* key expression */
int, /* key length */
int ); /* number of decimal places */
int scdcexpr( int, /* file handle */
char * ); /* key expression */
int scdcflush( int ); /* file handle */
int scdchget( int ); /* file handle */
int scdcindex( int, /* data file handle */
char *, /* new file name */
int, /* index key type */
char *, /* key expression */
int, /* key length */
int ); /* number of decimal places */
int scdcinfo( int, /* file handle */
SC_NTXINFO * ); /* file information and status */
int scdcopenx( int *, /* file handle */
char *, /* filename */
int ); /* open mode and characteristics */
/**********
*
* Clipper Index Key Building Prototypes
*
**********/
int scdckmake( int, /* .DBF file handle */
int, /* .NTX file handle */
void ** ); /* index key */
/**********
*
* Clipper Index Key Manipulator Prototypes
*
**********/
int scdckadd( int, /* file handle */
void *, /* key string */
long ); /* data record number */
int scdckbot( int, /* file handle */
void *, /* key string */
long *); /* data record number */
int scdckcur( int, /* file handle */
void *, /* key string */
long *); /* data record number */
int scdckdel( int, /* file handle */
void *, /* key string */
long ); /* data record number */
int scdckfind( int, /* file handle */
void *, /* key string */
long *, /* data record number */
int); /* exact match or first */
int scdcknext( int, /* file handle */
void *, /* key string */
long *); /* data record number */
int scdckprev( int, /* file handle */
void *, /* key string */
long *); /* data record number */
int scdcktop( int, /* file handle */
void *, /* key string */
long *); /* data record number */
/**********
*
* FoxBASE+/FoxPro Index File Manipulators Prototypes
*
**********/
int scdibfrsz( int, /* index file handle */
int *, /* buffer length in pages */
int ); /* set or get buffer length */
int scdiclose( int ); /* file handle */
int scdicreate( char *, /* filename */
int, /* index key type */
char *, /* key expression */
int ); /* key length */
int scdiexpr( int, /* file handle */
char * ); /* key expression */
int scdiflush( int ); /* file handle */
int scdihget( int ); /* file handle */
int scdiindex( int, /* data file handle */
char *, /* new file name */
int, /* index key type */
char *, /* key expression */
int ); /* key length */
int scdiinfo( int, /* file handle */
SC_IDXINFO * ); /* file information and status */
int scdiopenx( int *, /* file handle */
char *, /* filename */
int ); /* open mode and characteristics */
/**********
*
* FoxBASE+/FoxPro Index Key Building Prototypes
*
**********/
int scdikdate( char *, /* FoxBASE date */
char *, /* date string */
int ); /* date string format type */
int scdikmake( int, /* .DBF file handle */
int, /* .NTX file handle */
void ** ); /* index key */
int scdiknum( char *, /* FoxBASE double */
double ); /* C double */
/**********
*
* FoxBASE+/FoxPro Index Key Manipulator Prototypes
*
**********/
int scdikadd( int, /* file handle */
void *, /* key string */
long ); /* data record number */
int scdikbot( int, /* file handle */
void *, /* key string */
long *); /* data record number */
int scdikcur( int, /* file handle */
void *, /* key string */
long *); /* data record number */
int scdikdel( int, /* file handle */
void *, /* key string */
long ); /* data record number */
int scdikfind( int, /* file handle */
void *, /* key string */
long *, /* data record number */
int); /* exact match or first */
int scdiknext( int, /* file handle */
void *, /* key string */
long *); /* data record number */
int scdikprev( int, /* file handle */
void *, /* key string */
long *); /* data record number */
int scdiktop( int, /* file handle */
void *, /* key string */
long *); /* data record number */
/**********
*
* FoxPro Memo File Manipulator Prototypes
*
**********/
int scdwclose( int ); /* file handle */
int scdwcreate( char *, /* filename */
int ); /* number of bytes per memo block */
int scdwinfo( int, /* file handle */
SC_FPTINFO * ); /* file information and status */
int scdwhget( int ); /* file handle */
int scdwopenx( int *, /* file handle */
char *, /* filename */
int ); /* open mode & characteristics */
int scdwpack( int, /* data file handle */
int *); /* memo file handle */
int scdwrget( int, /* file handle */
long, /* record number */
char ** ); /* buffer for record number */
int scdwrput( int, /* file handle */
long *, /* record number */
char *, /* buffer for record data */
int ); /* add/update switch */
/**********
*
* External Variables
*
**********/
extern int sc_date_style; /* date string format for scddfget/scddfput */
/**********
*
* Compatibility Definitions
*
**********/
#define scdfget(a,b,c) scddfget(a,b,c)
#define scdfgetx(a,b,c,d) scddfget(a,b,c)
#define scdfgets(a,b,c) scddfgets(a,b,c)
#define scdfgetsx(a,b,c,d) scddfgets(a,b,c)
#define scdfput(a,b,c) scddfput(a,b,c)
#define scdfputx(a,b,c,d) scddfput(a,b,c)
#define scdfputs(a,b,c) scddfputs(a,b,c)
#define scdfputsx(a,b,c,d) scddfputs(a,b,c)
#define scdfinfo(a,b,c) scddfinfo(a,b,c)
#define scdfnam2no(a,b,c) scddfnam2no(a,b,c)
#define scdrclear(a,b) scddrclear(a)
#define scdrdel(a,b) scddrdel(a,b)
#define scdrget(a,b) scddrgetx(a,NULL,b)
#define scdrinfo(a,b,c,d,e) scddrinfo(a,b,c,d)
#define scdrput(a,b,c) scddrputx(a,NULL,b,c)
#define scdrundel(a,b) scddrundel(a,b)
#define scdfgett(a,b,c) scdtrget(a,b,c,SC_CRDELETE)
#define scdfgettx(a,b,c,d) scdtrget(a,b,c,d)
#define scdfputt(a,b,c) scdtrput(a,b,c,66)
#define scdfputtx(a,b,c,d) scdtrput(a,b,c,d)
#define scdkadd(a,b,c) scdnkadd(a,b,c);
#define scdkcur(a,b,c) scdnkcur(a,b,c);
#define scdkdate(a,b) scdnkdate(a,b,SC_YMD)
#define scdkdatex(a,b,c) scdnkdate(a,b,c)
#define scdkdel(a,b,c) scdnkdel(a,b,c)
#define scdkfind(a,b,c,d) scdnkfind(a,b,c,d)
#define scdkfirst(a,b,c) scdnktop(a,b,c)
#define scdklast(a,b,c) scdnkbot(a,b,c)
#define scdkmake(a,b,c) scdnkmake(a,b,c)
#define scdkmakex(a,b,c,d) scdnkmake(a,b,c)
#define scdknext(a,b,c) scdnknext(a,b,c)
#define scdkprev(a,b,c) scdnkprev(a,b,c)
#define scdnopen(a,b) scdnopenx(a,b,SC_RDWR | SC_FLUSH | SC_EXCLUDE)
#define scdpinfo(a,b) scdnbfrsz(a,b,SC_GETSZ)
#define scdpnum(a,b) scdnbfrsz(a,b,SC_SETSZ)
#define scdtopen(a,b) scdtopenx(a,b,SC_RDWR | SC_FLUSH | SC_EXCLUDE)